package xiangya.bysj.service.interf;

import java.util.List;

import xiangya.bysj.entity.Patient;
import xiangya.bysj.entity.TakeCycle;
import xiangya.bysj.entity.TakeInfo;

/**
 * 服药信息的业务类
 * 
 * @author Mr.zhang
 *
 */
public interface TakeInfoServiceInterface extends ServiceInterface<TakeInfo> {
	/**
	 * 批量保存服务方法
	 * 
	 * @param list
	 *            需要批量保存的服药信息的list集合
	 * @throws Exception
	 */
	public void saveBatch(List<TakeInfo> list) throws Exception;

	/**
	 * 通过服药者的id获取服药信息的服务方法
	 * 
	 * @param patientId
	 *            服药者的id
	 * @param todayDate
	 *            当天的日期，如果没有则表示该服药者所有的服药信息
	 * @return 返回服药信息的list集合
	 * @throws Exception
	 */
	public List<TakeInfo> getByPatientId(int patientId, String todayDate) throws Exception;

	/**
	 * 批量添加服药周期
	 * 
	 * @param list
	 *            服药周期集合
	 * @throws Exception
	 */
	public void saveCycleBatch(List<TakeCycle> list) throws Exception;

	/**
	 * 单个添加服药周期
	 * 
	 * @param takeCycle
	 *            服药周期
	 * @throws Exception
	 */
	public void saveCycle(TakeCycle takeCycle) throws Exception;

	/**
	 * 删除服药周期
	 * 
	 * @param cycleId
	 *            服药周期id
	 * @throws Exception
	 */
	public void deleteCycle(int cycleId) throws Exception;

	/**
	 * 根据id获取服药信息
	 * 
	 * @param takeinfoId
	 * @return
	 * @throws Exception
	 */
	public TakeInfo getById(int takeinfoId) throws Exception;

	/**
	 * 根据服药信息id获取服药周期
	 * 
	 * @param takeinfoId
	 *            服药信息id
	 * @return list集合
	 * @throws Exception
	 */
	public List<TakeCycle> getCycleByTakeInfoId(int takeinfoId) throws Exception;

	/**
	 * 根据userid获取其所添加的服药信息
	 * 
	 * @param userId
	 * @return list集合
	 * @throws Exception
	 */
	public List<TakeInfo> getByUser(int userId) throws Exception;

	/**
	 * 根据患者id数组获取所有的服药信息
	 * 
	 * @param pIds
	 *            数组
	 * @return list集合
	 * @throws Exception
	 */
	public List<TakeInfo> getByPatients(int[] pIds) throws Exception;

	/**
	 * 获取剩余药量
	 * 
	 * @param tkId
	 *            服药信息id
	 * @return 数量
	 * @throws Exception
	 */
	public int getAmount(int tkId) throws Exception;
}
